﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DTO;

namespace GUI
{
    public partial class FormThemPhieuNhap : Window
    {
        private static int madonhang;
        public int MaDonHang
        {
            get { return madonhang; }
            set { madonhang = value; }
        }


        public FormThemPhieuNhap()
        {
            InitializeComponent();
            hoiThoat = false;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnChapNhan_Click(object sender, EventArgs e)
        {

            if (cbbMaDH.SelectedItem == null)
            {
                MessageBox.Show("Chưa chọn mã đơn hàng ", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (cbbMaNguoiNhan.SelectedItem == null)
            {
                MessageBox.Show("Chưa chọn mã người nhận hàng ", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }           
          
            CTDHBUS chitietbus = new CTDHBUS();
            List<CTDatHangDTO> danhsach = chitietbus.LayDSCTDatHang(MaDonHang);
            // Them Phieu Nhap
            PhieuNhapDTO pnDTO = new PhieuNhapDTO();
            pnDTO.MaPN = int.Parse(txtMaPN.Text);
            pnDTO.NgayNhap = dtpNgayNhap.Value;
            pnDTO.MaDH = (int) cbbMaDH.SelectedItem;
            pnDTO.MaNV = (int)cbbMaNguoiNhan.SelectedValue;
            if( txtGhiChu.Text.Length != 0)
            {
                pnDTO.GhiChu = txtGhiChu.Text.Trim(); 
            }
            else
            {
                pnDTO.GhiChu = " ";
            }

            // them phieu nhap
            PhieuNhapBUS pnbus = new PhieuNhapBUS();
            int kq = pnbus.ThemPhieuNhap(pnDTO);
            BUS.SoDuBUS sodu = new BUS.SoDuBUS();   
            sodu.ThemSoDuThangMoi(dtpNgayNhap.Value);
            //Them chi tiet phieu nhap
            for (int i = 0; i < dataGridViewCTPN.Rows.Count ; i++)
            {
                    CTPhieuNhapDTO ctDTO = new CTPhieuNhapDTO();
                    ctDTO.MaPN = pnDTO.MaPN;
                    ctDTO.MaSP = int.Parse(dataGridViewCTPN[0, i].Value.ToString());    
                    ctDTO.NgayNhap = pnDTO.NgayNhap;
                    ctDTO.SoLuong = int.Parse(dataGridViewCTPN[3, i].Value.ToString());
                    CTPhieuNhapBUS bus1 = new CTPhieuNhapBUS();
                    int temp = bus1.ThemChiTiet(ctDTO);
                    // Cap nhat San Pham Ton
                    SPBUS spbus = new SPBUS();
                    spbus.CapNhatThemSanPham(ctDTO.MaSP, ctDTO.SoLuong);                                     
                    BUS.SPBUS.capnhatsodu(ctDTO.MaSP, ctDTO.SoLuong, dtpNgayNhap.Value);
                    // Cap nhat don hang
                    CTDHBUS ctdhbus = new CTDHBUS();                    
                    ctdhbus.CapNhatSoLuongConLai(pnDTO.MaDH, ctDTO.MaSP, -ctDTO.SoLuong);
            }
            MessageBox.Show("Thêm thành công");
            Close();

        }

        private void FormThemPhieuNhap_Load(object sender, EventArgs e)
        {
            // Load MaPN
            List<PhieuNhapDTO> lst = new List<PhieuNhapDTO>();
            PhieuNhapBUS pnb = new PhieuNhapBUS();
            lst = pnb.LayDSPhieuNhap();
            if (lst.Count() == 0)
                txtMaPN.Text = (lst.Count() + 1).ToString();
            else
                txtMaPN.Text = (pnb.LayMaLonNhat() + 1).ToString();
            
            // load MaDH
            /*DHBUS dhBus = new DHBUS();
            List<DatHangDTO> dsDonHang = dhBus.LayDonDHChuaNhap();
            for (int i = 0; i < dsDonHang.Count() ; i++)
                cbbMaDH.Items.Add(dsDonHang[i].MaDH);*/
            DataSet dts= new DataSet();
            DHBUS.LayMaDHChuaHoanThanh().Fill(dts);
            DataTable tb = dts.Tables[0];
            for (int i = 0; i < tb.Rows.Count; i++)
                cbbMaDH.Items.Add(tb.Rows[i][0]);           
            //load MaNV

            NVBUS nvBus = new NVBUS();
            List<NhanVienDTO> dsNhanVien = nvBus.LayDSNV();
            //for (int i = 0; i < dsNhanVien.Count(); i++)
            //    cbbMaNguoiNhan.Items.Add(dsNhanVien[i].MaNV);
            cbbMaNguoiNhan.DataSource = dsNhanVien;
            cbbMaNguoiNhan.DisplayMember = "HoTen";
            cbbMaNguoiNhan.ValueMember = "MaNV";
        }

        public void Load_Them_DSSP()
        {
            //load MaSP
            CTDHBUS chitietbus = new CTDHBUS();
            List<CTDatHangDTO> danhsach = chitietbus.LayDSCTDatHang(MaDonHang);
            dataGridViewCTPN.Rows.Clear();
            for (int i = 0; i < danhsach.Count(); i++)
            {
                SPBUS sp = new SPBUS();
                string ten = sp.LayTenSP(danhsach[i].MaSP);
                dataGridViewCTPN.Rows.Add(danhsach[i].MaSP,ten,danhsach[i].ConLai,0);
            }
        }

        public void Load_SoLuong()
        {
            for (int i = 0; i < dataGridViewCTPN.RowCount; i++)
                dataGridViewCTPN[3, i].Value = 0;
        }


        public void Load_Page_ThemPhieuNhap()
        {
            List<PhieuNhapDTO> lst = new List<PhieuNhapDTO>();
            PhieuNhapBUS pnb = new PhieuNhapBUS();
            lst = pnb.LayDSPhieuNhap();
            if (lst.Count() == 0)
                txtMaPN.Text = (lst.Count() + 1).ToString();
            else
                txtMaPN.Text = (pnb.LayMaLonNhat() + 1).ToString();
            cbbMaDH.SelectedItem = null;
            cbbMaNguoiNhan.SelectedItem = null;
            dataGridViewCTPN.Rows.Clear();
        }

        private void cbbMaDH_SelectedIndexChanged(object sender, EventArgs e)
        {
            MaDonHang = (int)cbbMaDH.SelectedItem;
            Load_Them_DSSP();
        }

        private void dataGridViewCTPN_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            // Kiem tra So Luong
            CTDHBUS ctb = new CTDHBUS();
            List<CTDatHangDTO> ds = ctb.LayDSCTDatHang(MaDonHang);
            for (int i = 0; i < dataGridViewCTPN.RowCount ; i++)
            {

                if (dataGridViewCTPN[3, i].Value == null)
                {
                    MessageBox.Show("Chưa nhập số lượng sản phẩm", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Load_SoLuong();
                    return;
                }

                string sanpham = dataGridViewCTPN[3, i].Value.ToString();
                for (int j = 0; j < sanpham.Length; j++)
                {
                    if (char.IsDigit(sanpham[j]) == false)
                    {
                        MessageBox.Show("Kiểu dữ liệu của giá trị Số lượng chưa hợp lệ ", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        Load_SoLuong();
                        return;
                    }
                }

                if (int.Parse(dataGridViewCTPN[3, i].Value.ToString()) < 0)
                {
                    MessageBox.Show("Giá trị số lượng phải >= 0", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Load_SoLuong();
                    return;
                }
                if (int.Parse(dataGridViewCTPN[3, i].Value.ToString()) > int.Parse(dataGridViewCTPN[2, i].Value.ToString()))
                {
                    MessageBox.Show("Số lượng Sản phẩm đã vượt quá số lượng đặt", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    Load_SoLuong();
                    return;
                }

            }
        }  
       
    }
}
